home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
misc
/
emu
/
Frodo.lha
/
src
/
FrodoPrefs.s
< prev
next >
Wrap
Text File
|
1995-01-25
|
18KB
|
812 lines
*
* Source machine generated by GadToolsBox V2.0b
* which is (c) Copyright 1991-1993 Jaba Development
*
* GUI Designed by : Christian Bauer
*
include 'exec/types.i'
include 'intuition/intuition.i'
include 'intuition/classes.i'
include 'intuition/classusr.i'
include 'intuition/imageclass.i'
include 'intuition/gadgetclass.i'
include 'libraries/gadtools.i'
include 'graphics/displayinfo.i'
include 'graphics/gfxbase.i'
XREF _GadToolsBase
XREF _IntuitionBase
XREF _GfxBase
XREF _SysBase
XREF _UtilityBase
XREF _LVOOpenScreenTagList
XREF _LVOOpenWindowTagList
XREF _LVOCloseScreen
XREF _LVOCloseWindow
XREF _LVOPrintIText
XREF _LVOLockPubScreen
XREF _LVOUnlockPubScreen
XREF _LVOSetMenuStrip
XREF _LVOClearMenuStrip
XREF _LVOGetVisualInfoA
XREF _LVOFreeVisualInfo
XREF _LVOCreateContext
XREF _LVOCreateGadgetA
XREF _LVOGT_RefreshWindow
XREF _LVOFreeGadgets
XREF _LVOCreateMenusA
XREF _LVOLayoutMenusA
XREF _LVOFreeMenus
XREF _LVOOpenDiskFont
XREF _LVOCloseFont
XREF _LVODrawBevelBoxA
XREF _LVOFreeClass
XREF _LVONewObjectA
XREF _LVODisposeObject
XREF _LVOTextLength
XREF _LVOCopyMem
XREF _LVOFindTagItem
XREF _LVOIntuiTextLength
XREF _LVOForbid
XREF _LVOPermit
GD_OK EQU 0
GD_Cancel EQU 1
GD_Save EQU 2
GD_Joystick1On EQU 3
GD_Joystick2On EQU 4
GD_JoystickSwap EQU 5
GD_GetDisplayID EQU 6
GD_DisplayID EQU 7
GD_ScreenType EQU 8
GD_NormalCycles EQU 9
GD_BadLineCycles EQU 10
GD_CIACycles EQU 11
GD_Dir8 EQU 12
GD_Dir9 EQU 13
GD_Dir10 EQU 14
GD_Dir11 EQU 15
GD_UseSIDCard EQU 16
GD_Drv8IsIEC EQU 17
GD_Drv9IsIEC EQU 18
GD_Drv10IsIEC EQU 19
GD_Drv11IsIEC EQU 20
GD_GetDir8 EQU 21
GD_GetDir9 EQU 22
GD_GetDir10 EQU 23
GD_GetDir11 EQU 24
GD_OtherIEC EQU 25
GD_KeyboardYZ EQU 26
Prefs_CNT EQU 27
XDEF Scr
XDEF VisualInfo
XDEF PubScreenName
XDEF PrefsWnd
XDEF PrefsGList
XDEF PrefsGadgets
XDEF getClass
XDEF getImage
XREF initGet
XDEF PrefsLeft
XDEF PrefsTop
XDEF PrefsWidth
XDEF PrefsHeight
XDEF Font
XDEF Attr
XDEF FontX
XDEF FontY
XDEF OffX
XDEF OffY
Scr:
DC.L 0
VisualInfo:
DC.L 0
PubScreenName:
DC.L WBName
WBName:
DC.B 'Workbench',0
CNOP 0,2
PrefsWnd:
DC.L 0
PrefsGList:
DC.L 0
PrefsGadgets:
DCB.L 27,0
BufNewGad:
DC.W 0,0,0,0
DC.L 0,0
DC.W 0
DC.L 0,0,0
TD:
DC.L TAG_DONE
getClass:
DC.L 0
getImage:
DC.L 0
CL:
DC.L GT_VisualInfo,0,TAG_DONE
PrefsLeft:
DC.W 0
PrefsTop:
DC.W 11
PrefsWidth:
DC.W 632
PrefsHeight:
DC.W 197
Font:
DC.L 0
FontX:
DC.W 0
FontY:
DC.W 0
OffX:
DC.W 0
OffY:
DC.W 0
Attr:
DC.L 0
DC.W 0
DC.B 0,0
TopazName:
DC.B 'topaz.font',0
CNOP 0,2
PrefsGTypes:
DC.W BUTTON_KIND
DC.W BUTTON_KIND
DC.W BUTTON_KIND
DC.W CHECKBOX_KIND
DC.W CHECKBOX_KIND
DC.W CHECKBOX_KIND
DC.W BUTTON_KIND
DC.W TEXT_KIND
DC.W CYCLE_KIND
DC.W INTEGER_KIND
DC.W INTEGER_KIND
DC.W INTEGER_KIND
DC.W STRING_KIND
DC.W STRING_KIND
DC.W STRING_KIND
DC.W STRING_KIND
DC.W CHECKBOX_KIND
DC.W CHECKBOX_KIND
DC.W CHECKBOX_KIND
DC.W CHECKBOX_KIND
DC.W CHECKBOX_KIND
DC.W GENERIC_KIND
DC.W GENERIC_KIND
DC.W GENERIC_KIND
DC.W GENERIC_KIND
DC.W CHECKBOX_KIND
DC.W CHECKBOX_KIND
PrefsNGads:
DC.W 84,174,101,16
DC.L OKText,0
DC.W GD_OK
DC.L PLACETEXT_IN,0,0
DC.W 443,174,101,16
DC.L CancelText,0
DC.W GD_Cancel
DC.L PLACETEXT_IN,0,0
DC.W 263,174,101,16
DC.L SaveText,0
DC.W GD_Save
DC.L PLACETEXT_IN,0,0
DC.W 188,56,26,11
DC.L Joystick1OnText,0
DC.W GD_Joystick1On
DC.L PLACETEXT_LEFT,0,0
DC.W 188,69,26,11
DC.L Joystick2OnText,0
DC.W GD_Joystick2On
DC.L PLACETEXT_LEFT,0,0
DC.W 188,82,26,11
DC.L JoystickSwapText,0
DC.W GD_JoystickSwap
DC.L PLACETEXT_LEFT,0,0
DC.W 188,124,193,14
DC.L GetDisplayIDText,0
DC.W GD_GetDisplayID
DC.L PLACETEXT_IN,0,0
DC.W 188,138,193,14
DC.L DisplayIDText,0
DC.W GD_DisplayID
DC.L PLACETEXT_LEFT,0,0
DC.W 188,154,129,14
DC.L ScreenTypeText,0
DC.W GD_ScreenType
DC.L PLACETEXT_LEFT,0,0
DC.W 188,7,81,14
DC.L NormalCyclesText,0
DC.W GD_NormalCycles
DC.L PLACETEXT_LEFT,0,0
DC.W 188,23,81,14
DC.L BadLineCyclesText,0
DC.W GD_BadLineCycles
DC.L PLACETEXT_LEFT,0,0
DC.W 188,39,81,14
DC.L CIACyclesText,0
DC.W GD_CIACycles
DC.L PLACETEXT_LEFT,0,0
DC.W 377,19,193,14
DC.L Dir8Text,0
DC.W GD_Dir8
DC.L PLACETEXT_LEFT,0,0
DC.W 377,35,193,14
DC.L Dir9Text,0
DC.W GD_Dir9
DC.L PLACETEXT_LEFT,0,0
DC.W 377,51,193,14
DC.L Dir10Text,0
DC.W GD_Dir10
DC.L PLACETEXT_LEFT,0,0
DC.W 377,67,193,14
DC.L Dir11Text,0
DC.W GD_Dir11
DC.L PLACETEXT_LEFT,0,0
DC.W 188,96,26,11
DC.L UseSIDCardText,0
DC.W GD_UseSIDCard
DC.L PLACETEXT_LEFT,0,0
DC.W 594,19,26,11
DC.L Drv8IsIECText,0
DC.W GD_Drv8IsIEC
DC.L PLACETEXT_ABOVE,0,0
DC.W 594,35,26,11
DC.L Drv9IsIECText,0
DC.W GD_Drv9IsIEC
DC.L 0,0,0
DC.W 594,51,26,11
DC.L Drv10IsIECText,0
DC.W GD_Drv10IsIEC
DC.L 0,0,0
DC.W 594,67,26,11
DC.L Drv11IsIECText,0
DC.W GD_Drv11IsIEC
DC.L 0,0,0
DC.W 570,19,20,14
DC.L GetDir8Text,0
DC.W GD_GetDir8
DC.L 0,0,0
DC.W 570,35,20,14
DC.L GetDir9Text,0
DC.W GD_GetDir9
DC.L 0,0,0
DC.W 570,51,20,14
DC.L GetDir10Text,0
DC.W GD_GetDir10
DC.L 0,0,0
DC.W 570,67,20,14
DC.L GetDir11Text,0
DC.W GD_GetDir11
DC.L 0,0,0
DC.W 594,88,26,11
DC.L OtherIECText,0
DC.W GD_OtherIEC
DC.L PLACETEXT_LEFT,0,0
DC.W 188,110,26,11
DC.L KeyboardYZText,0
DC.W GD_KeyboardYZ
DC.L PLACETEXT_LEFT,0,0
PrefsGTags:
DC.L GT_Underscore,'_'
DC.L TAG_DONE
DC.L GT_Underscore,'_'
DC.L TAG_DONE
DC.L GT_Underscore,'_'
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L GTTX_Border,1
DC.L TAG_DONE
DC.L GTCY_Labels,ScreenTypeLabels
DC.L TAG_DONE
DC.L GTIN_Number,0
DC.L GTIN_MaxChars,10
DC.L TAG_DONE
DC.L GTIN_Number,0
DC.L GTIN_MaxChars,10
DC.L TAG_DONE
DC.L GTIN_Number,0
DC.L GTIN_MaxChars,10
DC.L TAG_DONE
DC.L GTST_MaxChars,256
DC.L TAG_DONE
DC.L GTST_MaxChars,256
DC.L TAG_DONE
DC.L GTST_MaxChars,256
DC.L TAG_DONE
DC.L GTST_MaxChars,256
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
DC.L TAG_DONE
OKText:
DC.B '_OK',0
CancelText:
DC.B 'Abbre_chen',0
SaveText:
DC.B '_Sichern',0
Joystick1OnText:
DC.B 'Joystick an Port 1',0
Joystick2OnText:
DC.B 'Joystick an Port 2',0
JoystickSwapText:
DC.B 'Joysticks vertauschen',0
GetDisplayIDText:
DC.B 'Auswählen...',0
DisplayIDText:
DC.B 'Bildschirmmodus',0
ScreenTypeText:
DC.B 'Bildschirmtyp',0
NormalCyclesText:
DC.B 'Zyklen/Zeile (CPU)',0
BadLineCyclesText:
DC.B 'Zyklen/Bad Line (CPU)',0
CIACyclesText:
DC.B 'Zyklen/Zeile (CIA)',0
Dir8Text:
DC.B 'Laufwerk 8',0
Dir9Text:
DC.B 'Laufwerk 9',0
Dir10Text:
DC.B 'Laufwerk 10',0
Dir11Text:
DC.B 'Laufwerk 11',0
UseSIDCardText:
DC.B 'SID-Karte benutzen',0
Drv8IsIECText:
DC.B 'IEC',0
Drv9IsIECText:
DC.B '',0
Drv10IsIECText:
DC.B '',0
Drv11IsIECText:
DC.B '',0
GetDir8Text:
DC.B '',0
GetDir9Text:
DC.B '',0
GetDir10Text:
DC.B '',0
GetDir11Text:
DC.B '',0
OtherIECText:
DC.B 'IEC für andere Geräte verwenden',0
KeyboardYZText:
DC.B 'Amerik. Tastatur',0
CNOP 0,2
XDEF ScreenTypeLabels
ScreenTypeLabels:
DC.L ScreenTypeLab0
DC.L ScreenTypeLab1
DC.L ScreenTypeLab2
DC.L 0
ScreenTypeLab0: DC.B 'EGS',0
ScreenTypeLab1: DC.B 'Picasso',0
ScreenTypeLab2: DC.B 'Amiga',0
CNOP 0,2
XDEF PrefsWindowTags
PrefsWindowTags:
PrefsL:
DC.L WA_Left,0
PrefsT:
DC.L WA_Top,0
PrefsW:
DC.L WA_Width,0
PrefsH:
DC.L WA_Height,0
DC.L WA_IDCMP
dc.l BUTTONIDCMP!CHECKBOXIDCMP!TEXTIDCMP!CYCLEIDCMP!INTEGERIDCMP!STRINGIDCMP!IDCMP_GADGETUP!IDCMP_VANILLAKEY!IDCMP_REFRESHWINDOW
DC.L WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_SMART_REFRESH!WFLG_SIMPLE_REFRESH!WFLG_ACTIVATE
PrefsWG:
DC.L WA_Gadgets,0
DC.L WA_Title,PrefsWTitle
DC.L WA_ScreenTitle,PrefsSTitle
DC.L WA_AutoAdjust,1
DC.L TAG_DONE
PrefsWTitle:
DC.B 'Frodo Einstellungen',0
CNOP 0,2
PrefsSTitle:
DC.B 'Frodo C64 Emulator V1.0 (C)1994-1995 Christian Bauer. Freely distributable.',0
CNOP 0,2
ComputeX:
move.l d1,-(sp)
move.w FontX,d1
bra.s ComputeItX
ComputeY:
move.l d1,-(sp)
move.w FontY,d1
mulu d1,d0
addq.w #4,d0
divu #8,d0
move.l (sp)+,d1
rts
ComputeItX:
mulu d1,d0
addq.w #4,d0
divu #8,d0
move.l (sp)+,d1
rts
ComputeFont:
lea.l Attr,a0
move.l a0,Font
move.l Scr,a1
lea.l sc_RastPort(a1),a1
move.l rp_Font(a1),a1
move.l LN_NAME(a1),ta_Name(a0)
move.w tf_YSize(a1),ta_YSize(a0)
move.w tf_XSize(a1),FontX
move.w tf_YSize(a1),FontY
move.l Scr,a0
move.b sc_WBorLeft(a0),d0
ext.w d0
move.w d0,OffX
move.l sc_Font(a0),a1
move.w ta_YSize(a1),d0
addq.w #1,d0
move.b sc_WBorTop(a0),d1
ext.w d1
add.w d1,d0
move.w d0,OffY
tst.w d2
beq.s CompDone
tst.w d3
beq.s CompDone
move.w d2,d0
jsr ComputeX
add.w OffX,d0
move.b sc_WBorRight(a0),d1
ext.w d1
add.w d1,d0
cmp.w sc_Width(a0),d0
bhi.s UseTopaz
move.w d3,d0
jsr ComputeY
add.w OffY,d0
move.b sc_WBorBottom(a0),d1
ext.w d1
add.w d1,d0
cmp.w sc_Height(a0),d0
bhi.s UseTopaz
CompDone:
rts
UseTopaz:
move.l Font,a0
move.l #TopazName,ta_Name(a0)
move.w #8,FontY
move.w #8,FontX
move.w #8,ta_YSize(a0)
rts
XDEF SetupScreen
SetupScreen
movem.l d1-d3/a0-a2/a6,-(sp)
move.l _IntuitionBase,a6
move.l PubScreenName,a0
jsr _LVOLockPubScreen(a6)
move.l d0,Scr
tst.l d0
beq SError
moveq #0,d2
moveq #0,d3
jsr ComputeFont
move.l Scr,a0
move.l _GadToolsBase,a6
lea.l TD,a1
jsr _LVOGetVisualInfoA(a6)
move.l d0,VisualInfo
move.l d0,CL+4
tst.l d0
beq VError
jsr initGet
move.l d0,getClass
tst.l d0
beq CError
move.l _IntuitionBase,a6
move.l d0,a0
suba.l a1,a1
lea.l CL,a2
jsr _LVONewObjectA(a6)
move.l d0,getImage
tst.l d0
beq OError
moveq #0,d0
SDone:
movem.l (sp)+,d1-d3/a0-a2/a6
rts
SError:
moveq #1,d0
bra.s SDone
VError:
moveq #2,d0
bra.s SDone
CError:
moveq #4,d0
bra.s SDone
OError:
moveq #5,d0
bra.s SDone
XDEF CloseDownScreen
CloseDownScreen:
movem.l d0-d1/a0-a1/a6,-(sp)
move.l _IntuitionBase,a6
move.l getImage,a0
cmpa.l #0,a0
beq.s NoObj
jsr _LVODisposeObject(a6)
NoObj:
move.l getClass,a0
cmpa.l #0,a0
beq.s NoCls
jsr _LVOFreeClass(a6)
NoCls:
move.l _GadToolsBase,a6
move.l VisualInfo,a0
cmpa.l #0,a0
beq.s NoVis
jsr _LVOFreeVisualInfo(a6)
move.l #0,VisualInfo
NoVis:
move.l _IntuitionBase,a6
suba.l a0,a0
move.l Scr,a1
cmpa.l #0,a1
beq.s NoScr
jsr _LVOUnlockPubScreen(a6)
move.l #0,Scr
NoScr:
movem.l (sp)+,d0-d1/a0-a1/a6
rts
XDEF OpenPrefsWindow
OpenPrefsWindow:
movem.l d1-d4/a0-a4/a6,-(sp)
move.l Scr,a0
moveq #0,d3
moveq #0,d2
move.w PrefsWidth,d2
move.w PrefsHeight,d3
jsr ComputeFont
move.l Scr,a0
move.l d2,d0
jsr ComputeX
move.l d0,d4
move.w PrefsLeft,d2
add.w d2,d0
add.w OffX,d0
move.b sc_WBorRight(a0),d1
ext.w d1
add.w d1,d0
cmp.w sc_Width(a0),d0
bls.s PrefsWOk
move.w sc_Width(a0),d0
sub.w d4,d0
move.w d0,d2
PrefsWOk:
move.l d3,d0
jsr ComputeY
move.l d0,d4
move.w PrefsTop,d3
add.w d3,d0
add.w OffY,d0
move.b sc_WBorBottom(a0),d1
ext.w d1
add.w d1,d0
cmp.w sc_Height(a0),d0
bls.s PrefsHOk
move.w sc_Height(a0),d0
sub.w d4,d0
move.w d0,d3
PrefsHOk:
move.l _GadToolsBase,a6
lea.l PrefsGList,a0
jsr _LVOCreateContext(a6)
move.l d0,a3
tst.l d0
beq PrefsCError
movem.w d2-d3,-(sp)
moveq #0,d3
lea.l PrefsGTags,a4
PrefsGL:
move.l _SysBase,a6
lea.l PrefsNGads,a0
move.l d3,d0
mulu #gng_SIZEOF,d0
add.l d0,a0
lea.l BufNewGad,a1
moveq #gng_SIZEOF,d0
jsr _LVOCopyMem(a6)
lea.l BufNewGad,a0
move.l VisualInfo,gng_VisualInfo(a0)
move.l Font,gng_TextAttr(a0)
move.w gng_LeftEdge(a0),d0
jsr ComputeX
add.w OffX,d0
move.w d0,gng_LeftEdge(a0)
move.w gng_TopEdge(a0),d0
jsr ComputeY
add.w OffY,d0
move.w d0,gng_TopEdge(a0)
move.w gng_Width(a0),d0
jsr ComputeX
move.w d0,gng_Width(a0)
move.w gng_Height(a0),d0
jsr ComputeY
move.w d0,gng_Height(a0)
move.l _GadToolsBase,a6
lea.l PrefsGTypes,a0
moveq #0,d0
move.l d3,d1
asl.l #1,d1
add.l d1,a0
move.w (a0),d0
move.l a3,a0
lea.l BufNewGad,a1
move.l a4,a2
jsr _LVOCreateGadgetA(a6)
tst.l d0
bne.s PrefsCOK
movem.w (sp)+,d2-d3
bra PrefsGError
PrefsCOK:
move.l d0,a3
move.l d3,d0
asl.l #2,d0
lea.l PrefsGadgets,a0
add.l d0,a0
move.l a3,(a0)
move.l a3,a0
move.l d3,d0
asl.l #1,d0
lea.l PrefsGTypes,a1
add.l d0,a1
cmp.w #GENERIC_KIND,(a1)
bne.s PrefsNoGen1
or.w #GFLG_GADGIMAGE!GFLG_GADGHIMAGE,gg_Flags(a0)
or.w #GACT_RELVERIFY,gg_Activation(a0)
move.l getImage,gg_GadgetRender(a0)
move.l getImage,gg_SelectRender(a0)
PrefsNoGen1:
PrefsTL:
tst.l (a4)
beq.s PrefsDN
addq.w #8,a4
bra.s PrefsTL
PrefsDN:
addq.w #4,a4
addq.w #1,d3
cmp.w #Prefs_CNT,d3
bmi PrefsGL
movem.w (sp)+,d2-d3
move.l PrefsGList,PrefsWG+4
ext.l d2
ext.l d3
move.l d2,PrefsL+4
move.l d3,PrefsT+4
move.l Scr,a0
move.w PrefsWidth,d0
jsr ComputeX
add.w OffX,d0
move.b sc_WBorRight(a0),d1
ext.w d1
add.w d1,d0
move.l d0,PrefsW+4
move.w PrefsHeight,d0
jsr ComputeY
add.w OffY,d0
move.b sc_WBorBottom(a0),d1
ext.w d1
add.w d1,d0
move.l d0,PrefsH+4
move.l _IntuitionBase,a6
suba.l a0,a0
lea.l PrefsWindowTags,a1
jsr _LVOOpenWindowTagList(a6)
move.l d0,PrefsWnd
tst.l d0
beq PrefsWError
move.l _GadToolsBase,a6
move.l PrefsWnd,a0
suba.l a1,a1
jsr _LVOGT_RefreshWindow(a6)
moveq #0,d0
PrefsDone:
movem.l (sp)+,d1-d4/a0-a4/a6
rts
PrefsCError:
moveq #1,d0
bra.s PrefsDone
PrefsGError:
moveq #2,d0
bra.s PrefsDone
PrefsWError:
moveq #4,d0
bra.s PrefsDone
XDEF ClosePrefsWindow
ClosePrefsWindow:
movem.l d0-d1/a0-a2/a6,-(sp)
move.l _IntuitionBase,a6
move.l PrefsWnd,a0
cmpa.l #0,a0
beq PrefsNWnd
jsr _LVOCloseWindow(a6)
move.l #0,PrefsWnd
PrefsNWnd:
move.l _GadToolsBase,a6
move.l PrefsGList,a0
cmpa.l #0,a0
beq PrefsNGad
jsr _LVOFreeGadgets(a6)
move.l #0,PrefsGList
PrefsNGad:
movem.l (sp)+,d0-d1/a0-a2/a6
rts
end